package cn.vendcommon.com.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import lombok.Data;
import net.sf.jsqlparser.util.validation.metadata.DatabaseException;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * 用户实体类
 */
@Data
public class User {

    /** 主键ID */
    @NotNull
    private Integer id;

    /** 用户名 */
    private String username;

    /** 密码（序列化时忽略） */
    @JsonIgnore
    @NotEmpty(message = "密码不能为空")
    @Pattern(regexp = "^\\S{1,10}$", message = "密码长度必须在1~10之间，且不能包含空格")
    private String password;

    /** 昵称 */
    private String nickname;

    /** 性别（0:男 1:女 2:未知） */
    private Integer sex;

    /** 邮箱 */
    @Email(message = "邮箱格式不正确")
    private String email;

    /** 出生日期 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate birthday;

    /** 登录IP */
    private String loginIP;

    /** 手机号 */
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
    private String phone;

    /** 用户头像地址 */
    private String userPic;

    /** 创建时间 */
    private LocalDateTime createTime;

    /** 更新时间 */
    private LocalDateTime updateTime;

    /** 账号余额 */
    private Double account;

    /** 角色（0:管理员 1:普通用户 2:VIP用户 3:超级VIP） */
    private Integer role;

    /** 状态（0:禁用 1:正常） */
    private Integer status;

    /** 最近登录时间 */
    private LocalDateTime loginTime;

    /** 经度 */
    private Double longitude;

    /** 纬度 */
    private Double latitude;

    /** 查找范围（公里） */
    private Double findRange;

    /** 微信openid */
    private String wxOpenId;
}
